package ezai

import (
	"gitee.com/hongzhaomin/ezai/bean"
	"reflect"
)

type AiTools interface {
	annotationAiTools()
}

type AiTool interface {
	annotationAiTool()
}

// FuncMapping 函数对象描述
type FuncMapping struct {
	name        string            // 函数名称
	rvFunc      reflect.Value     // 函数反射对象
	funcParams  []FuncParamDesc   // 函数入参对象列表
	description string            // 函数描述
	funcDesc    bean.FunctionDesc // AI大模型所需要的函数描述对象
}

// FuncParamDesc 函数入参对象
type FuncParamDesc struct {
	definedParamIsPtr bool              // 定义的参数是否为指针类型：true -> 是；false -> 否
	rtParam           reflect.Type      // 参数的 reflect.Type 值
	pName             string            // 参数名称
	defaultValMap     map[string]string // 参数字段默认值（只支持结构体参数），使用default TAG声明
	desc              string            // 参数描述
	required          bool              // 参数是否必填
	Parameters        *bean.Parameters  // function call 参数对象
}
